home *** CD-ROM | disk | FTP | other *** search
- /*
- ** PhotoCD
- **
- ** $VER: ADPro PhotoCD Loader 2.1 (2.1.95)
- ** Loader for Photo-CD-Pictures in ADPro together with AsimPhoto or hpcdtoppm.
- ** Copyright © 1994-1995 Erik Simonson
- ** All Rights Reserved
- */
-
- OPTIONS RESULTS
-
- SIGNAL ON BREAK_C
- SIGNAL ON BREAK_D
- SIGNAL ON HALT
- SIGNAL ON SYNTAX
-
- /*TRACE(RESULTS)*/
-
-
- ADPro = '"ADPro PhotoCD-loader"'
- NL = '0a'x
- NeedPrefsversion = 1.2
- PrefsFile = "ENV:ADPro/PhotoCD.prefs"
-
- IF ~SHOW('L',"rexxsupport.library") THEN
- IF ~ADDLIB('rexxsupport.library',0,-30,0) THEN
- CALL Quit("Couldn't open 'rexxsupport.library', you must\ninstall it before using this program.")
-
- Complete = 0
- DO WHILE Complete ~= 2
- IF OPEN(Prefs,PrefsFile,"R") THEN DO
- Complete = 1
- OpenPrefs = 1
- DO i=1 TO 3
- READLN(Prefs)
- END
- Prefsversion=WORD(READLN(Prefs),3)
- IF Prefsversion = NeedPrefsversion THEN DO
-
- /* Läser in konverteringsprogram */
- ConvProg = READLN(Prefs)
- ConvProg = RIGHT(ConvProg,LENGTH(ConvProg)-16)
- IF UPPER(ConvProg) ~= "ASIMPHOTO" & UPPER(ConvProg) ~= "HPCDTOPPM" THEN ConvProg = "CONVPROG"
-
- /* Läser in sökväg för konverteringsprogram */
- Conv=READLN(Prefs)
- CALL Signs(RIGHT(Conv,LENGTH(Conv)-16),'"')
- ConvProgPath = String
- CALL CheckPath("File",ConvProgPath)
- IF Correct = 0 THEN ConvProgPath = "CONVPROGPATH"
-
- /* Läser in språk */
- Language=WORD(READLN(Prefs),3)
-
- /* Läser in arbetskatalog */
- Work=READLN(Prefs)
- CALL Signs(RIGHT(Work,LENGTH(Work)-16),'"')
- WorkDir = String
- IF LEFT(RIGHT(WorkDir,2),1) ~= ':' THEN DO
- CALL CheckPath("Dir",WorkDir)
- IF Correct = 0 THEN WorkDir = "WORKDIR"
- END
- CLOSE(Prefs)
- END
- ELSE
- CLOSE(Prefs)
- END
- ELSE
- PrefsFile = "ENV:ADPro/PhotoCD.prefs"
- Complete = Complete + 1
- END
-
- ADDRESS "ADPro"
- DISPLAYMESSAGE ADPro
-
- IF OpenPrefs = "OPENPREFS" | Prefsversion = "PREFSVERSION" THEN
- OKAY1 '"While this is the first time you use this\nprogram you have to set the preferences."'
-
- IF OpenPrefs = 1 & Prefsversion > NeedPrefsversion THEN
- OKAY1 '"Get a newer version of this program!"'
-
- /* Asking which language to use */
- Resultat = 1
- IF Language = "LANGUAGE" THEN DO
- DO WHILE Resultat ~= 0
- LISTVIEW '"Language ?"' 2 NOSELECT SORT ITEMS "English Svenska"
- Resultat = RC
- IF Resultat = 0 THEN Language = WORD(ADPRO_RESULT,1)
- ELSE DO
- OKAYN '"Language selection"' '"No language selected, you must select\none before using this program."' "Select|Cancel"
- IF RC = 0 THEN CALL Quit
- END
- END
- END
-
-
- /* Strings, translate them if you want to, but notice
- ** that you have to doublequote strings with spaces.
- */
-
- IF Language = '"English"' THEN DO
-
- ProgReq = '"Select conversion program..."'
- ProgMess = '"No conversion program selected, you must\nselect one before using this program."'
- ProgChoi = "Select|Cancel"
-
- ConvProgReq = '"Select the conversion program you are using"'
-
- WorkReq = '"Work in directory..."'
- WorkMess = '"No workdirectory selected, you must\nselect one before using this program."'
-
- PrefMess = '"In which way do you want to save the preferences?"'
- Cancel = "Cancel"
- Save = "Save"
- Use = "Use"
- PrefsMess = '"The preferences could only be saved temporarily\nin Ram:, and because of that will not be found\nthe next time after a cold reboot."'
-
- FileReq = '"Select PhotoCD Image File to Load"'
- FileMess = '"No picture selected, do you want to quit?"'
- FileChoi = "Select|Yes"
-
- ComQuality= '"Select compression quality"'
- ComQuaMess= '"No compression quality selected, do you want to quit?"'
-
- ResReq = '"In which resolution do you want\nto have the converted picture?"'
- Resolution= '"Resolution ?"'
- ResMess = '"No resolution selected, do you want to quit?"'
-
- ConvMess = '"Converting picture..."'
-
- SmoothMess= '"Do you want smoothing?"'
- SmoothChoi= "Yes|No"
-
- END
-
-
- /* Swedish strings */
-
- ELSE IF Language = '"Svenska"' THEN DO
-
- ProgReq = '"Välj konverteringsprogram..."'
- ProgMess = '"Inget konverteringsprogram valt, du måste\nvälja ett för att använda detta program."'
- ProgChoi = "Välj|Avbryt"
-
- ConvProgReq = "'Vilket konverteringsprogram använder du?'"
-
- WorkReq = '"Arbeta i katalog..."'
- WorkMess = '"Ingen arbetskatalog vald, du måste välja\nett för att använda detta program."'
-
- PrefMess = '"Hur vill du spara inställningarna?"'
- Cancel = "Avbryt"
- Save = "Spara"
- Use = "Använd"
- PrefsMess = '"Inställningarna kunde bara sparas temporärt\ni Ram:, och kommer på grund av det att vara\nborta nästa gång datorn slås på."'
-
- FileReq = '"Öppna Photo-CD-bild..."'
- FileMess = '"Ingen bild vald, vill du avsluta?"'
- FileChoi = "Välj|Ja"
-
- ComQuality= '"Välj bildkvalité/packningsgrad"'
- ComQuaMess= '"Ingen bildkvalité/packningsgrad vald, vill du avsluta?"'
-
- ResReq = '"Vilken upplösning vill du ha\npå den konverterade bilden?"'
- Resolution= '"Upplösning ?"'
- ResMess = '"Ingen upplösning vald, vill du avsluta?"'
-
- ConvMess = '"Konverterar bilden..."'
-
- SmoothMess= '"Vill du ha utjämning av bilden?"'
- SmoothChoi= "Ja|Nej"
-
- END
-
- /* End strings */
-
-
- /* Asking for conversionprogram */
- IF ConvProgPath = "CONVPROGPATH" THEN DO
- Correct = 0
- DO WHILE Correct = 0
- CALL FilePath("File",ProgReq,"DH0:Graphics",,ProgMess,ProgChoi)
- ConvProgPath = '"'String'"'
- CheckPath("File",ConvProgPath)
- SavePrefs = 1
- END
- /* Checking which conversionprogram is used */
- Teckennr = 1
- TestConvProg = ""
- ConvProgSign = ""
- DO WHILE ConvProgSign ~= "/" & ConvProgSign ~= '"'
- TestConvProg = INSERT(ConvProgSign,TestConvProg)
- Teckennr = Teckennr + 1
- ConvProgSign = LEFT(RIGHT(ConvProgPath,Teckennr),1)
- END
- IF UPPER(TestConvProg) = "ASIMPHOTO" | UPPER(TestConvProg) = "HPCDTOPPM" THEN
- ConvProg = TestConvProg
- END
- IF ConvProg = "CONVPROG" THEN DO
- ConvProg = 'AsimPhoto'
- OKAYN ADPro ConvProgReq "AsimPhoto"'|'"HpCDToPpm"
- IF RC = 0 THEN ConvProg = 'HpCDToPpm'
- SavePrefs = 1
- END
-
- /* Asking for workdirectory */
- IF WorkDir = "WORKDIR" THEN DO
- CALL FilePath("Dir",WorkReq,"T:",,WorkMess,ProgChoi)
- WorkDir = '"'String'"'
- SavePrefs = 1
- END
- IF RIGHT(WorkDir,2) = ':"' THEN
- WorkFile = INSERT(LEFT(WorkDir,(LENGTH(WorkDir)-1)),"ADPPHCDLOAD")'"'
- ELSE
- WorkFile = INSERT(LEFT(WorkDir,(LENGTH(WorkDir)-1)),"/ADPPHCDLOAD")'"'
-
-
- /* Save prefs */
- IF SavePrefs = 1 THEN DO
- OKAYN ADPro PrefMess Save'|'Use'|'Cancel
- SELECT
- WHEN RC = 1 THEN Save = 2
- WHEN RC = 2 THEN Save = 1
- WHEN RC = 0 THEN Save = 0
- END
- IF Save ~= 0 THEN DO
- Resultat = 0
- DO WHILE Resultat < Save
- IF OPEN(Prefs,PrefsFile,"W") THEN DO
- WriteLn(Prefs,"These are the current preferences for ADPro PhotoCD Loader.")
- WriteLn(Prefs,"1994-1995 © Erik Simonson")
- WriteLn(Prefs,"")
- WriteLn(Prefs,"Prefsversion = "||NeedPrefsversion)
- WriteLn(Prefs,"ConvProg = "||ConvProg)
- WriteLn(Prefs,"ConvProgPath = "||ConvProgPath)
- WriteLn(Prefs,"Language = "||Language)
- WriteLn(Prefs,"Work-Dir = "||WorkDir)
- CLOSE(Prefs)
- END
- ELSE
- OKAY1 PrefsMess
- Resultat = Resultat + 1
- PrefsFile = "ENVARC:ADPro/PhotoCD.prefs"
- END
- IF Resultat = 1 & Save = 2 THEN
- OKAY1 PrefsMess
- END
- END
-
-
- /* Asking for picture and resolution for it */
- CALL FilePath("File",FileReq,"CD0:PHOTO_CD/IMAGES",,FileMess,FileChoi)
-
- IF ConvProg = "AsimPhoto" THEN DO /* AsimPhoto */
- ConvProgCom = ConvProgPath "From" String
- OKAYN ADPro ResReq INSERT("768x512|384x256|192x128|",Cancel)
- SELECT
- WHEN RC = 1 THEN DestFil = ' To '||WorkFile||' Resolution base'
- WHEN RC = 2 THEN DestFil = ' To '||WorkFile||' Resolution base4'
- WHEN RC = 3 THEN DestFil = ' To '||WorkFile||' Resolution base16'
- WHEN RC = 0 THEN CALL Quit
- END
- END
- ELSE DO
- Resultat = 10
- DO WHILE Resultat = 10
- GETNUMBER ComQuality 80 0 100
- Resultat = RC
- IF Resultat = 10 THEN DO
- OKAYN ADPro ComQuaMess FileChoi
- IF RC = 0 THEN CALL Quit
- END
- END
- Quality# = ADPRO_RESULT
- DestFil = ' -jpeg -quality '||Quality#||' '||String||' '||WorkFile||''
- Resultat = 5
- DO WHILE Resultat = 5
- LISTVIEW Resolution 6 NOSELECT ITEMS "128x192 256x384 512x768 1024x1536 2048x3072 4096x6144"
- Resultat = RC
- IF Resultat = 5 THEN DO
- OKAYN ADPro ResMess FileChoi
- IF RC = 0 THEN CALL Quit
- END
- END
-
- Res = WORD(ADPRO_RESULT,1)
- SELECT
- WHEN Res = '"128x192"' THEN ConvProgCom = ConvProgPath||' -1'
- WHEN Res = '"256x384"' THEN ConvProgCom = ConvProgPath||' -2'
- WHEN Res = '"512x768"' THEN ConvProgCom = ConvProgPath||' -3'
- WHEN Res = '"1024x1536"' THEN ConvProgCom = ConvProgPath||' -4'
- WHEN Res = '"2048x3072"' THEN ConvProgCom = ConvProgPath||' -5'
- WHEN Res = '"4096x6144"' THEN ConvProgCom = ConvProgPath||' -6'
- END
- END
-
- /* Converting image */
- DISPLAYMESSAGE ConvMess
- ADDRESS COMMAND
- INSERT(ConvProgCom,Destfil)
-
- ADDRESS "ADPro"
- DISPLAYMESSAGE ADPro
-
- /* Open picture */
- ADDRESS "ADPro"
- IF ConvProg = "AsimPhoto" THEN
- LOADER "IFF" WorkFile
- ELSE DO
- OKAYN ADPro SmoothMess SmoothChoi
- IF RC = 1 THEN
- LOADER "JPEG" WorkFile SMOOTHING
- ELSE
- LOADER "JPEG" WorkFile
- END
- CALL Quit
-
- CheckPath:
- PARSE ARG Type,Path
- Correct = 0
- Leng = LENGTH(Path)
-
- IF Type = "File" THEN
- IF OPEN(Test,RIGHT(LEFT(Path,Leng-1),Leng-2),"R") THEN DO
- CLOSE(Test)
- Correct = 1
- END
- ELSE IF Type = "Dir" & RIGHT(Path,1) = ':' THEN
- IF SHOWLIST('V',UPPER(LEFT(Path,Leng-1))) THEN Correct = 1
-
- IF Correct = 0 THEN DO
- Number = 1
- String = ""
- Resultat = 1
- DO WHILE Resultat ~= 0
- Sign = LEFT(RIGHT(Path,Number),1)
- IF Sign ~= '/' & Sign ~= ':' THEN DO
- Number = Number + 1
- String = INSERT(Sign,String)
- END
- ELSE DO
- SignEnd = RIGHT(String,1)
- IF SignEnd = '"' THEN
- String = LEFT(String,(LENGTH(String)-1))
- Resultat = 0
- Correct = 0
- IF Sign = "/" THEN DO
- Word = LEFT(Path,(Leng-Number))
- IF LEFT(Word,1) = '"' THEN
- Word = RIGHT(Word,LENGTH(Word)-1)
- END
- ELSE DO
- LeftWord = LEFT(Path,(Leng-Number+1))
- LengLeftWord = LENGTH(LeftWord)
- Word = RIGHT(LeftWord,LengLeftWord-1)
- END
- List = SHOWDIR(Word, 'd')
- WordNumber = WORDS(List)
- Number = 1
- DO WHILE Correct = 0 & Number < WordNumber + 1
- IF WORD(List,Number) ~= String THEN
- Number = Number + 1
- ELSE
- Correct = 1
- END
- END
- END
- END
- RETURN Correct
-
-
- FilePath:
- PARSE ARG Type,Title,DefaultDir,DefaultFile,Mess,Choices
- ADDRESS "ADPro"
- Resultat = 1
- DO WHILE Resultat ~= 0
- IF Type = "File" THEN DO
- GETFILE Title DefaultDir DefaultFile
- Resultat = RC
- IF Resultat ~= 0 THEN DO
- OKAYN ADPro Mess Choices
- IF RC = 0 THEN CALL Quit
- END
- String = ADPRO_RESULT
- END
- ELSE
- IF Type = "Dir" THEN DO
- GETDIR Title DefaultDir
- Resultat = RC
- IF Resultat ~= 0 THEN DO
- OKAYN ADPro Mess Choices
- IF RC = 0 THEN CALL Quit
- END
- String = ADPRO_RESULT
- END
- END
- RETURN String
-
- Signs:
- PARSE ARG String,Sign
- StringLength = LENGTH(String)
- IF LEFT(String,1) ~= Sign THEN
- String = INSERT(Sign,String)
- IF RIGHT(String,1) ~= Sign THEN
- String = INSERT(String,Sign)
- RETURN String
-
- Quit:
- PARSE ARG String
- ADDRESS "ADPro"
- IF String ~= "" THEN OKAY1 String
- DISPLAYMESSAGE
- ADDRESS COMMAND
- "DELETE "||INSERT(LEFT(WorkFile,(LENGTH(WorkFile)-1)),'#?"')
- EXIT 0
-